//
//  UICollectionViewFlowLayout+ZKChain.h
//  ChainFun
//
//  Created by 洪绵卫 on 2022/1/11.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UICollectionViewFlowLayout (ZKChain)

#pragma mark UICollectionViewFlowLayout 的
/// 初始化 没有设置Frame
+ (UICollectionViewFlowLayout * _Nonnull (^)(void))zk_allocInit;

/// 网格中项目行之间使用的最小间距
- (UICollectionViewFlowLayout * _Nonnull (^)(CGFloat))zk_minimumLineSpacing;

/// 在同一行的项目之间使用的最小间距
- (UICollectionViewFlowLayout * _Nonnull (^)(CGFloat))zk_minimumInteritemSpacing;

/// item大小
- (UICollectionViewFlowLayout * _Nonnull (^)(CGSize))zk_itemSize;

/// 预估Item的大小
- (UICollectionViewFlowLayout * _Nonnull (^)(CGSize))zk_estimatedItemSize;

/// 滚动的方向
- (UICollectionViewFlowLayout * _Nonnull (^)(UICollectionViewScrollDirection ))zk_scrollDirection;

/* 如果委托没有实现collectionView:layout:referenceSizeForHeaderInSection:方法，流布局对象使用该属性中设置的默认头大小。
    在布局时，只使用对应于适当滚动方向的大小。例如，对于垂直滚动方向，布局对象使用你的方法返回的高度值。(在该实例中，头部的宽度将被设置为集合视图的宽度。)如果适当滚动维度中的大小为0，则不会添加头部。
   默认大小值是(0,0)。
*/
- (UICollectionViewFlowLayout * _Nonnull (^)(CGSize))zk_headerReferenceSize;
/*
 如果委托没有实现collectionView:layout:referenceSizeForFooterInSection:方法，流布局对象使用为该属性设置的默认页脚大小。 在布局时，只使用对应于适当滚动方向的大小。例如，对于垂直滚动方向，布局对象使用由这个属性指定的高度值。(在该实例中，页脚的宽度将被设置为集合视图的宽度。)如果适当滚动维度中的大小为0，则不会添加页脚。 默认大小值是(0,0)。
 */
- (UICollectionViewFlowLayout * _Nonnull (^)(CGSize))zk_footerReferenceSize;

/// 页边距用来在一节中布置内容的页边距
- (UICollectionViewFlowLayout * _Nonnull (^)(UIEdgeInsets))zk_sectionInset;

- (UICollectionViewFlowLayout * _Nonnull (^)(UICollectionViewFlowLayoutSectionInsetReference))zk_sectionInsetReference API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);

/// 指示在滚动时header是否固定到集合视图边界的顶部。
- (UICollectionViewFlowLayout * _Nonnull (^)(BOOL))zk_sectionHeadersPinToVisibleBounds API_AVAILABLE(ios(9.0));
/// 指示滚动时页脚是否固定到集合视图边界的底部。
- (UICollectionViewFlowLayout * _Nonnull (^)(BOOL))zk_sectionFootersPinToVisibleBounds API_AVAILABLE(ios(9.0));



@end

NS_ASSUME_NONNULL_END
